﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Entidades;
using AccesoBD;
using System.Data.SqlClient;

namespace PresentacionEscritorio
{
    public partial class frmRegistrarConvenioOS2 : Form
    {
        private int nroFilaSelec;
        private bool grillaE;
        private bool grillaP;

        public frmRegistrarConvenioOS2()
        {
            InitializeComponent();
        }

        private void frmRegistrarConvenioOS2_Load(object sender, EventArgs e)
        {
            cargarGrilla();
            dtpFechaHasta.MinDate = dtpFechaDesde.Value.AddMonths(1);
            dtpFechaHasta.Checked = false;
            cargarcmbOS();
            panelCarencia.Enabled = false;

        }


        public void cargarGrilla()
        {

            SqlConnection conexion = DB.Conectar();
            SqlCommand sqlcmd = new SqlCommand("SELECT nombre FROM Especialidad", conexion);
            SqlDataReader dr = sqlcmd.ExecuteReader();
            int i = 0;
            while (dr.Read())
            {
                i = grdEspecialidades.Rows.Add();
                grdEspecialidades.Rows[i].Cells["Especialidad"].Value = dr["nombre"].ToString();
            }
            grdEspecialidades.AllowUserToAddRows = false; // para que no se genere una fila vacia al ultimo 
            for (int f = 0; f < grdEspecialidades.RowCount; f++)
            {
                grdEspecialidades.Rows[f].Cells["PrecioAfiliadoE"].ReadOnly = true;
                grdEspecialidades.Rows[f].Cells["PrecioMedicoE"].ReadOnly = true;
                grdEspecialidades.Rows[f].Cells["FechaDesdeE"].ReadOnly = true;
                grdEspecialidades.Rows[f].Cells["FechaHastaE"].ReadOnly = true;
                grdEspecialidades.Rows[f].Cells["CarenciaE"].Selected = false;
                grdEspecialidades.Rows[f].Cells["PeriodoCarenciaE"].ReadOnly = true;
            }

            SqlConnection conexion2 = DB.Conectar();
            SqlCommand sqlcmd2 = new SqlCommand("SELECT nombre FROM Practica", conexion2);
            SqlDataReader dr2 = sqlcmd2.ExecuteReader();
            int i2 = 0;
            while (dr2.Read())
            {
                i2 = grdPracticas.Rows.Add();
                grdPracticas.Rows[i2].Cells["Practica"].Value = dr2["nombre"].ToString();

            }
            grdPracticas.AllowUserToAddRows = false;
            for (int f = 0; f < grdPracticas.RowCount; f++)
            {
                grdPracticas.Rows[f].Cells["PrecioAfiliadoP"].ReadOnly = true;
                grdPracticas.Rows[f].Cells["PrecioMedicoP"].ReadOnly = true;
                grdPracticas.Rows[f].Cells["FechaDesdeP"].ReadOnly = true;
                grdPracticas.Rows[f].Cells["FechaHastaP"].ReadOnly = true;
                grdPracticas.Rows[f].Cells["CarenciaP"].Selected = false;
                grdPracticas.Rows[f].Cells["PeriodoCarenciaP"].ReadOnly = true;
            }
        }

        private void cargarcmbOS()
        {
            ObrasSociales obras = new ObrasSociales();
            List<ObraSocial> lista = ObrasSociales.obtenerTodasOS();

            if (lista != null)
            {
                cmbObraSocial.DataSource = lista;
                cmbObraSocial.ValueMember = "idObraSocial";
                cmbObraSocial.DisplayMember = "nombre";
            }
        }

        private void cargarcmbUnidadPeriodo()
        {
            UnidadesPeriodos u = new UnidadesPeriodos();
            List<UnidadPeriodo> lista = u.obtenerUnidadPeriodo();

            if (lista != null)
            {
                cmbObraSocial.DataSource = lista;
                cmbObraSocial.ValueMember = "codUnidadPeriodo";
                cmbObraSocial.DisplayMember = "nombreUnidad";
            }
        }

        private void grdEspecialidades_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
        {

            if (grdEspecialidades.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn == grdEspecialidades.Columns["Habilitar"])
            {
                if (true)
                {
                    grdEspecialidades.Rows[e.RowIndex].Cells["PrecioAfiliadoE"].ReadOnly = false;
                    grdEspecialidades.Rows[e.RowIndex].Cells["PrecioMedicoE"].ReadOnly = false;
                    grdEspecialidades.Rows[e.RowIndex].Cells["FechaDesdeE"].ReadOnly = false;
                    grdEspecialidades.Rows[e.RowIndex].Cells["FechaHastaE"].ReadOnly = false;
                    grdEspecialidades.Rows[e.RowIndex].Cells["CarenciaE"].Selected = false;
                    grdEspecialidades.Rows[e.RowIndex].Cells["PeriodoCarenciaE"].ReadOnly = false;

                    grdEspecialidades.Rows[e.RowIndex].Cells["PrecioAfiliadoE"].Value = "";
                    grdEspecialidades.Rows[e.RowIndex].Cells["PrecioMedicoE"].Value = "";
                    grdEspecialidades.Rows[e.RowIndex].Cells["FechaDesdeE"].Value = "";
                    grdEspecialidades.Rows[e.RowIndex].Cells["FechaHastaE"].Value = dtpFechaDesde.Value.Date;
                    grdEspecialidades.Rows[e.RowIndex].Cells["PeriodoCarenciaE"].Value = "";
                }
                else
                {
                    grdEspecialidades.Rows[e.RowIndex].Cells["PrecioAfiliadoE"].ReadOnly = true;
                    grdEspecialidades.Rows[e.RowIndex].Cells["PrecioMedicoE"].ReadOnly = true;
                    grdEspecialidades.Rows[e.RowIndex].Cells["FechaDesdeE"].ReadOnly = true;
                    grdEspecialidades.Rows[e.RowIndex].Cells["FechaHastaE"].ReadOnly = true;
                    grdEspecialidades.Rows[e.RowIndex].Cells["CarenciaE"].Selected = false;
                    grdEspecialidades.Rows[e.RowIndex].Cells["PeriodoCarenciaE"].ReadOnly = true;
                }
            }

            if (grdEspecialidades.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn == grdEspecialidades.Columns["CarenciaE"])
            {
                panelCarencia.Enabled = true;
                txtCantPeriodoCarencia.Focus();
                cargarcmbUnidadPeriodo();

                nroFilaSelec = e.RowIndex;
                grillaE = true;
                grillaP = false;
            }
        }

        private void grdPracticas_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
        {
            if (grdPracticas.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn == grdPracticas.Columns["HabilitarP"])
            {
                if (true)
                {
                    grdPracticas.Rows[e.RowIndex].Cells["PrecioAfiliadoP"].ReadOnly = false;
                    grdPracticas.Rows[e.RowIndex].Cells["PrecioMedicoP"].ReadOnly = false;
                    grdPracticas.Rows[e.RowIndex].Cells["FechaDesdeP"].ReadOnly = false;
                    grdPracticas.Rows[e.RowIndex].Cells["FechaHastaP"].ReadOnly = false;
                    grdPracticas.Rows[e.RowIndex].Cells["CarenciaP"].Selected = false;
                    grdPracticas.Rows[e.RowIndex].Cells["PeriodoCarenciaP"].ReadOnly = false;

                    grdPracticas.Rows[e.RowIndex].Cells["PrecioAfiliadoP"].Value = "";
                    grdPracticas.Rows[e.RowIndex].Cells["PrecioMedicoP"].Value = "";
                    grdPracticas.Rows[e.RowIndex].Cells["FechaDesdeP"].Value = dtpFechaDesde.Value.Date;
                    grdPracticas.Rows[e.RowIndex].Cells["FechaHastaP"].Value = "";
                    grdPracticas.Rows[e.RowIndex].Cells["PeriodoCarenciaP"].Value = "";
                }
                else
                {
                    grdPracticas.Rows[e.RowIndex].Cells["PrecioAfiliadoP"].ReadOnly = true;
                    grdPracticas.Rows[e.RowIndex].Cells["PrecioMedicoP"].ReadOnly = true;
                    grdPracticas.Rows[e.RowIndex].Cells["FechaDesdeP"].ReadOnly = true;
                    grdPracticas.Rows[e.RowIndex].Cells["FechaHastaP"].ReadOnly = true;
                    grdPracticas.Rows[e.RowIndex].Cells["CarenciaP"].Selected = false;
                    grdPracticas.Rows[e.RowIndex].Cells["PeriodoCarenciaP"].ReadOnly = true;
                }
            }

            if (grdEspecialidades.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn == grdEspecialidades.Columns["CarenciaP"])
            {
                panelCarencia.Enabled = true;
                txtCantPeriodoCarencia.Focus();
                cargarcmbUnidadPeriodo();

                nroFilaSelec = e.RowIndex;
                grillaE = false;
                grillaP = true;
            }
        }

        private bool validarPrecio(string valorCelda)
        {
            float p;
            bool res = float.TryParse(valorCelda, out p);
            return res;
        }

        private bool validarFecha(string valorCelda)
        {
            DateTime f;
            bool res = DateTime.TryParse(valorCelda, out f);
            return res;
        }

        private void grdEspecialidades_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            //Para el precio del afiliado
            bool res;
            if (grdEspecialidades.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn == grdEspecialidades.Columns["PrecioAfiliadoE"] && grdEspecialidades.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly == false)
            {
                res = validarPrecio(e.FormattedValue.ToString());
                if (!res)
                {
                    MessageBox.Show("El precio no es correcto");
                    e.Cancel = true;
                }

            }

            //Para el precio del medico
            if (grdEspecialidades.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn == grdEspecialidades.Columns["PrecioMedicoE"] && grdEspecialidades.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly == false)
            {
                res = validarPrecio(e.FormattedValue.ToString());
                if (!res)
                {
                    MessageBox.Show("El precio no es correcto");
                    e.Cancel = true;
                }

            }

            //para la fecha desde
            if (grdEspecialidades.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn == grdEspecialidades.Columns["FechaDesdeE"] && grdEspecialidades.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly == false)
            {
                res = validarFecha(e.FormattedValue.ToString());
                DateTime fechaDesdePlan = Convert.ToDateTime(dtpFechaDesde.Value.Date);
                DateTime fechaDesdeEspecialidad = Convert.ToDateTime(e.FormattedValue.ToString());
                if (!res || fechaDesdePlan > fechaDesdeEspecialidad)
                {
                    MessageBox.Show("La fecha no es correcta");
                    e.Cancel = true;
                }
                if (dtpFechaHasta.Checked == true)
                {
                    DateTime fechaHastaPlan = Convert.ToDateTime(dtpFechaHasta.Value.Date);
                    if (fechaHastaPlan < fechaDesdeEspecialidad)
                    {
                        MessageBox.Show("La fecha no es correcta");
                        e.Cancel = true;
                    }
                }

                if (grdEspecialidades.Rows[e.RowIndex].Cells["CarenciaE"].Selected == false)
                {
                    grdEspecialidades.Rows[e.RowIndex].Cells["PeriodoCarenciaE"].ReadOnly = true;
                }
                else
                {
                    grdEspecialidades.Rows[e.RowIndex].Cells["PeriodoCarenciaE"].ReadOnly = true;
                }

            }
            //para la fecha hasta
            if (grdEspecialidades.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn == grdEspecialidades.Columns["FechaHastaE"] && grdEspecialidades.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly == false)
            {
                DateTime fechaHastaConvenio = Convert.ToDateTime(dtpFechaHasta.Value.Date);
                DateTime fechaDesdeEspecialidad = Convert.ToDateTime(grdEspecialidades.Rows[e.RowIndex].Cells["FechaDesdeE"].Value);
                DateTime fechaHastaEspecialidad = Convert.ToDateTime(e.FormattedValue.ToString());
                res = validarFecha(e.FormattedValue.ToString());
                if (!res || fechaHastaEspecialidad < fechaDesdeEspecialidad)
                {
                    MessageBox.Show("La fecha no es correcta");
                    e.Cancel = true;
                }
                if (dtpFechaHasta.Checked == true)
                {
                    if (fechaHastaConvenio < fechaHastaEspecialidad)
                    {
                        MessageBox.Show("La fecha no es correcta");
                        e.Cancel = true;
                    }
                }

            }
        }

        private void grdPracticas_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            //Para el precio del afiliado
            bool res;
            if (grdPracticas.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn == grdPracticas.Columns["PrecioAfiliadoP"] && grdPracticas.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly == false)
            {
                res = validarPrecio(e.FormattedValue.ToString());
                if (!res)
                {
                    MessageBox.Show("No hay valor correcto para el precio");
                    e.Cancel = true;
                }

            }

            //Para el precio del medico
            if (grdPracticas.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn == grdPracticas.Columns["PrecioMedicoP"] && grdPracticas.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly == false)
            {
                res = validarPrecio(e.FormattedValue.ToString());
                if (!res)
                {
                    MessageBox.Show("No hay valor correcto para el precio");
                    e.Cancel = true;
                }

            }

            //para la fecha desde
            if (grdPracticas.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn == grdPracticas.Columns["FechaDesdeP"] && grdPracticas.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly == false)
            {
                DateTime fechaDesdePlan = Convert.ToDateTime(dtpFechaDesde.Value.Date);
                DateTime fechaDesdePractica = Convert.ToDateTime(e.FormattedValue.ToString());
                DateTime fechaHastaPlan = Convert.ToDateTime(dtpFechaHasta.Value.Date);
                res = validarFecha(e.FormattedValue.ToString());
                if (!res || fechaDesdePlan > fechaDesdePractica)
                {
                    MessageBox.Show("La fecha no es correcta");
                    e.Cancel = true;
                }
                if (dtpFechaHasta.Checked == true)
                {
                    if (fechaHastaPlan < fechaDesdePractica)
                    {
                        MessageBox.Show("La fecha no es correcta");
                        e.Cancel = true;
                    }
                }

            }
            //para la fecha hasta
            if (grdPracticas.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn == grdPracticas.Columns["FechaHastaP"] && grdPracticas.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly == false)
            {
                DateTime fechaDesdePractica = Convert.ToDateTime(grdPracticas.Rows[e.RowIndex].Cells["FechaDesdeP"].Value);
                DateTime fechaHastaPlan = Convert.ToDateTime(dtpFechaHasta.Value.Date);
                DateTime fechaHastaPractica = Convert.ToDateTime(e.FormattedValue.ToString());
                res = validarFecha(e.FormattedValue.ToString());
                if (!res || fechaHastaPractica < fechaDesdePractica)
                {
                    MessageBox.Show("La fecha no es correcta");
                    e.Cancel = true;
                }
                if (dtpFechaHasta.Checked == true)
                {
                    if (fechaHastaPlan < fechaHastaPractica)
                    {
                        MessageBox.Show("La fecha no es correcta");
                        e.Cancel = true;
                    }
                }

            }
        }

        private void chkTodasEspecialidades_CheckedChanged_1(object sender, EventArgs e)
        {
            if (chkTodasEspecialidades.Checked == true)
            {
                foreach (DataGridViewRow row in grdEspecialidades.Rows)
                {
                    row.Cells["Habilitar"].Value = true;
                    row.Cells["PrecioAfiliadoE"].ReadOnly = false;
                    row.Cells["PrecioMedicoE"].ReadOnly = false;
                    row.Cells["FechaDesdeE"].ReadOnly = false;
                    row.Cells["FechaHastaE"].ReadOnly = false;
                    row.Cells["CarenciaE"].Selected = false;
                    row.Cells["PeriodoCarenciaE"].ReadOnly = false;

                    row.Cells["FechaHastaE"].Value = dtpFechaDesde.Value.Date;
                }
            }
            else
            {
                foreach (DataGridViewRow row in grdEspecialidades.Rows)
                {
                    row.Cells["Habilitar"].Value = false;

                    row.Cells["Habilitar"].Value = false;
                    row.Cells["PrecioAfiliadoE"].ReadOnly = true;
                    row.Cells["PrecioMedicoE"].ReadOnly = true;
                    row.Cells["FechaDesdeE"].ReadOnly = true;
                    row.Cells["FechaHastaE"].ReadOnly = true;
                    row.Cells["CarenciaE"].Selected = false;
                    row.Cells["PeriodoCarenciaE"].ReadOnly = true;

                }
            }
        }

        private void chkTodasPracticas_CheckedChanged_1(object sender, EventArgs e)
        {
            if (chkTodasPracticas.Checked == true)
            {
                foreach (DataGridViewRow row in grdPracticas.Rows)
                {
                    row.Cells["HabilitarP"].Value = true;
                    row.Cells["PrecioAfiliadoP"].ReadOnly = false;
                    row.Cells["PrecioMedicoP"].ReadOnly = false;
                    row.Cells["FechaDesdeP"].ReadOnly = false;
                    row.Cells["FechaHastaP"].ReadOnly = false;
                    row.Cells["CarenciaP"].Selected = false;
                    row.Cells["PeriodoCarenciaP"].ReadOnly = false;

                    row.Cells["FechaDesdeP"].Value = dtpFechaDesde.Value.Date;
                }
            }
            else
            {
                foreach (DataGridViewRow row in grdPracticas.Rows)
                {
                    row.Cells["HabilitarP"].Value = false;
                    row.Cells["PrecioAfiliadoP"].ReadOnly = true;
                    row.Cells["PrecioMedicoP"].ReadOnly = true;
                    row.Cells["FechaDesdeP"].ReadOnly = true;
                    row.Cells["FechaHastaP"].ReadOnly = true;
                    row.Cells["CarenciaP"].Selected = false;
                    row.Cells["PeriodoCarenciaP"].ReadOnly = true;
                }
            }
        }



        public void limpiar()
        {
            cmbObraSocial.SelectedIndex = -1;
            cmbUnidadPeriodo.SelectedIndex = -1;
            dtpFechaDesde.Value = DateTime.Now;
            dtpFechaHasta.Value = DateTime.Now.AddMonths(1);
            dtpFechaHasta.Checked = false;
            foreach (DataGridViewRow row in grdEspecialidades.Rows)
            {
                row.Cells["Habilitar"].Value = false;
                row.Cells["PrecioAfiliadoE"].Value = "";
                row.Cells["PrecioMedicoE"].Value = "";
                row.Cells["fechaDesdeE"].Value = "";
                row.Cells["fechaHastaE"].Value = "";
                row.Cells["CarenciaE"].Value = false;
                row.Cells["PeriodoCarenciaE"].Value = "";

            }
            foreach (DataGridViewRow row in grdPracticas.Rows)
            {
                row.Cells["HabilitarP"].Value = false;
                row.Cells["PrecioAfiliadoP"].Value = "";
                row.Cells["PrecioMedicoP"].Value = "";
                row.Cells["fechaDesdeP"].Value = "";
                row.Cells["fechaHastaP"].Value = "";
                row.Cells["CarenciaP"].Value = false;
                row.Cells["PeriodoCarenciaP"].Value = "";
            }
        }

        private void dtpFechaDesde_ValueChanged(object sender, EventArgs e)
        {
            dtpFechaHasta.MinDate = dtpFechaDesde.Value.AddMonths(1);
            dtpFechaHasta.Checked = false;

        }

        private void btnAceptar_Click_1(object sender, EventArgs e)
        {
            int cont = 0;
            Boolean res = false;
            DateTime fechaDesde = dtpFechaDesde.Value;
            DateTime fechaHasta = dtpFechaHasta.Value;

            //Para saber si la Os seleccionada tiene un convenio vigente
            SqlConnection conexionOS = DB.Conectar();
            SqlCommand sqlObraSocial = new SqlCommand("SELECT c.fechaVigenciaDesde, c.fechaVigenciaHasta FROM Obra_Social o, Convenio_OS c WHERE o.idConvenioOS = c.idConvenioOS AND o.nombreObraSocial = @nombre ", conexionOS);
            sqlObraSocial.Parameters.Add(new SqlParameter("@nombre", cmbObraSocial.SelectedText));
            SqlDataReader drOs = sqlObraSocial.ExecuteReader();

            //si esta vigente el convenio
            if (drOs.Read())
            {
                //Para saber si esta vigente
                if (drOs["fechaVigenciaHasta"] == DBNull.Value)
                {
                    MessageBox.Show("Existe Convenio Vigente con la Obra Social seleccionada", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    limpiar();
                }
            }
            //No hay convenio vigente
            else
            {
                List<DetalleConvenioOS> listdc = null;
                listdc = new List<DetalleConvenioOS>();

                foreach (DataGridViewRow row in grdEspecialidades.Rows)
                {
                    if (Convert.ToBoolean(row.Cells["Habilitar"].Value))
                    {
                        DetalleConvenioOS dc = new DetalleConvenioOS();

                        //Para saber el codigo de la especialidad
                        SqlConnection connE = DB.Conectar();
                        SqlCommand sqlEspecialidad = new SqlCommand("SELECT  codEspecialidad FROM Especialidad WHERE nombre = @nombre ", connE);
                        sqlEspecialidad.Parameters.Add(new SqlParameter("@nombre", row.Cells["Especialidad"].Value.ToString()));
                        SqlDataReader drE = sqlEspecialidad.ExecuteReader();

                        if (drE.Read())
                        {
                            dc.idEspecialidad = Convert.ToInt32(drE["codEspecialidad"].ToString());
                            dc.idPractica = null;
                            dc.precioAfiliado = float.Parse(row.Cells["PrecioAfiliadoE"].Value.ToString());
                            dc.precioMedico = float.Parse(row.Cells["PrecioMedicoE"].Value.ToString());
                            dc.fechaVigenciaDesde = Convert.ToDateTime(row.Cells["FechaDesdeE"].Value);

                            if ((row.Cells["PeriodoCarenciaE"].Value) == null)
                            {
                                dc.periodoCarencia = null;

                            }
                            else
                            {
                                dc.periodoCarencia = row.Cells["PeriodoCarenciaE"].Value.ToString();
                            }

                            if (dc.fechaVigenciaHasta != null)
                            {
                                dtpFechaHasta.Checked = true;
                                dtpFechaHasta.Value = Convert.ToDateTime(row.Cells["fechaHastaE"].Value);
                            }
                            else
                            {
                                dtpFechaHasta.Checked = false;
                            }
                            //dc.fechaVigenciaHasta = Convert.ToDateTime(row.Cells["fechaHastaE"].Value);

                            listdc.Add(dc);
                            connE.Close();
                            cont++;
                        }
                    }
                }
                foreach (DataGridViewRow row in grdPracticas.Rows)
                {
                    if (Convert.ToBoolean(row.Cells["HabilitarP"].Value))
                    {
                        DetalleConvenioOS dc2 = new DetalleConvenioOS();

                        //Para saber el codigo de la practica
                        SqlConnection connP = DB.Conectar();
                        SqlCommand sqlPractica = new SqlCommand("SELECT  idPractica FROM Practica WHERE nombre = @nombre ", connP);
                        sqlPractica.Parameters.Add(new SqlParameter("@nombre", row.Cells["Practica"].Value.ToString()));
                        SqlDataReader drP = sqlPractica.ExecuteReader();

                        if (drP.Read())
                        {
                            dc2.idEspecialidad = null;
                            dc2.idPractica = Convert.ToInt32(drP["idPractica"].ToString());
                            dc2.precioAfiliado = float.Parse(row.Cells["PrecioAfiliadoP"].Value.ToString());
                            dc2.precioMedico = float.Parse(row.Cells["PrecioMedicoP"].Value.ToString());
                            dc2.fechaVigenciaDesde = Convert.ToDateTime(row.Cells["fechaDesdeP"].Value);
                            dc2.periodoCarencia = Convert.ToString(row.Cells["PeriodoCarenciaP"].Value);

                            if (dc2.fechaVigenciaHasta != null)
                            {
                                dtpFechaHasta.Checked = true;
                                dtpFechaHasta.Value = Convert.ToDateTime(row.Cells["fechaHastaP"].Value);
                            }
                            else
                            {
                                dtpFechaHasta.Checked = false;
                            }
                            //dc2.fechaVigenciaHasta = Convert.ToDateTime(row.Cells["fechaHastaP"].Value);

                            listdc.Add(dc2);
                            connP.Close();
                            cont++;
                        }
                    }
                }
                if (cont > 0)
                {
                    ConveniosObrasSociales conv = new ConveniosObrasSociales();
                    Boolean resul = false;
                    int idOs = 0;
                    idOs = Convert.ToInt32(cmbObraSocial.SelectedValue.ToString());
                    resul = conv.registrarConvenioObraSocial(idOs, fechaDesde, fechaHasta, listdc);

                    if (resul)
                    {
                        MessageBox.Show("Se registro correctamente el convenio", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        limpiar();
                    }
                    else
                    {
                        MessageBox.Show("No se registro correctamente el convenio", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
                else
                {
                    MessageBox.Show("Debe cargar alguna especialidad o práctica", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }

            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            int periodo = Convert.ToInt32(txtCantPeriodoCarencia.Text);
            string unidad = Convert.ToString(cmbUnidadPeriodo.SelectedValue);

            string texto = periodo + " " + unidad;
            if (grillaE)
            {
                grdEspecialidades.Rows[nroFilaSelec].Cells["PeriodoCarenciaE"].Value = texto;

            }
            else
            {
                grdPracticas.Rows[nroFilaSelec].Cells["PeriodoCarenciaP"].Value = texto;
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Seguro que desea salir?", "Aviso", MessageBoxButtons.YesNo);
            if (result == DialogResult.Yes)
                this.Close();
        }
    }
}
